#include"mystdio.h"

#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>





myFILE* my_fopen(const char* pathname,const char* mode)
{
     int flag=0;

     if (strcmp(mode,"r")==0)
     {
          flag|=O_RDONLY;
     }
     else if (strcmp(mode,"w")==0)
     {
             flag|=(O_CREAT|O_WRONLY|O_TRUNC);
     }
     else if (strcmp(mode,"a")==0)
     {
        flag|=(O_CREAT|O_WRONLY|O_APPEND);
     }
     else
     {
          return NULL;
     }
     

     int fd=0;
     //设置一下打开权限
     if (flag&O_WRONLY)
     {
        umask(0);
       fd=open(pathname,flag,0666);
     }
     else
     {
        fd=open(pathname,flag);
     }
     
       if(fd < 0) return NULL;

    myFILE *fp = (myFILE*)malloc(sizeof(myFILE));
    if(fp == NULL) return NULL;
    fp->fileno = fd;

    return fp;
     
     

     
}


int my_fwrite(myFILE* fp,const char* s,int size)
{
    return write(fp->fileno,s,size);
}

void my_fclose(myFILE* fp)
{
   close(fp->fileno);
    free(fp);

}


